
package com.hlkj.pay.app.merchant.ext.impl.helipay.dto.eatrx;
/*
 * Hlpay-Plus aggregate payment system.
 * Copyright (c) 2024-2025 Hlpay Team Copyright has the right of final interpretation.
 */

import java.util.List;

import lombok.Data;

/**
 * @author HlpayTeam
 * @date 2024/12/20 17:22
 */
@Data
public class HeePayEatrxReportQueryRes extends HeePayEatrxCommonRes {

    // 平台的用户编号
    private String sysUserId;

    // 用户ID
    private String userId;

    // 用户详细信息
    private MerchantUserQueryDTO bean;

    @Data
    public static class MerchantUserQueryDTO {
        // 用户所属商户

        private String parentMerchantNo;
        // 用户名

        private String realName;
        // 证件类型

        private String certType;
        // 证件号

        private String certNo;

        // 对公对私
        // B2C 个人用户
        // B2B 企业用户
        private String onlineBankType;

        // 企业类型
        // ENTERPRISE：对公客户
        // INDIVIDUALBISS：个体工商户
        private String merchantType;
        // 虚拟账户

        private String virtualAccountNo;
        // 合利宝商户编号

        private String onlineMerchantNo;
        // 银行卡ID

        private String bankCardId;

        // 状态
        // INIT-入网中
        // EDIT - 编辑中
        // AUDITING-待审核
        // ACTIVE-正常,
        // AUDIT_FAIL-拒绝
        // SIGNING - 待签约
        // INACTIVE- 冻结
        private String status;

        // 银行报备状态
        // INIT:初始化,
        // DOING:处理中
        // FAIL:失败
        // SUCCESS:报备成功
        private String merchantChannelStatus;
        // 注册结果返回状态码

        private String channelRegisterCode;
        // 注册结果返回信息

        private String channelRegisterMsg;

        // 银行报备记录
        private List<ReportDTO> reports;
    }

    @Data
    public static class ReportDTO {

        // 虚拟账户号
        private String virtualAccountNo;

        // 合利宝商户编号
        private String onlineMerchantNo;

        // 银行报备状态
        // INIT:初始化,
        // DOING:处理中
        // FAIL:失败
        // SUCCESS:报备成功
        private String merchantChannelStatus;

        // 状态描述
        private String description;

        // 绑定账户
        private List<BindCardDTO> cards;
    }

    @Data
    public static class BindCardDTO {

        // 银行卡ID
        private String bankCardId;

        // 银行账号
        private String accountNo;

        // 开户名称
        private String accountName;

        // 绑定状态
        // INIT: 初始化
        // DOING: 处理中
        // VERIFY_INIT: 待验证
        // VERIFY_DOING:验证中
        // FAIL: 失败
        // SUCCESS:绑卡成功
        // UNBINDING:解绑中
        // UNBIND:已解绑
        private String bindStatus;

        // 法人验证状态
        // INIT：初始化
        // WAIT：待验证
        // FAIL：失败
        // SUCCESS：成功
        private String legalCheckStatus;

        // 联系人验证状态
        // INIT：初始化
        // WAIT：待验证
        // FAIL：失败
        // SUCCESS：成功
        private String contactCheckStatus;

        // 状态描述
        private String description;

    }

}
